// 从 今天开始的 第 startMonth 个月后的月初算起 到 今天开始的 第 endMonth 个月后的月底结束 之间的天数
// 注意： endMonth >= startMonth 发生错误时返回 0 
// startMonth = endMonth = 0 表示当月 默认值
// 如：假设今天是 2019-7-18
// rangeMonthDays(0, 0) 会获取到 7 月（当月）剩余的天数
// rangeMonthDays(0, 2) 会获取到 7.18（含今天）到 9.30 的天数
// rangeMonthDays(2, 6) 会获取到 9.1 到 1.31（2020年）

/**
 * 获取从指定月范围内的天数
 * @param {Number} startMonth 指定开始计算的月份
 * @param {Number} endMonth 指定结束计算的月份
 */

export const rangeMonthDays = (startMonth = 0, endMonth = 0) => {
    if (isNaN(Number(startMonth))) {
      return 'startMonth参数格式错误！'
    }
    if (isNaN(Number(endMonth))) {
      return 'endMonth参数格式错误！'
    }
    if (Number(startMonth) > Number(endMonth)) {
        console.log('参数传入错误！')
        return 0
    }

    let todayTimeStamp = new Date(month(Number(startMonth), 'start')).getTime()
    let specificTimeStamp = new Date(month(Number(endMonth))).getTime()
    let day = (specificTimeStamp - todayTimeStamp) / (1000 * 60 * 60 * 24) + 1
    return day
}

// 获取第 month 个月后 月底的日期
const month = (month, state) => {
    let time = new Date()
    time.setDate(time.getDate()) //获取Day天后的日期
    let y = time.getFullYear()
    let m
    let d
    if (time.getMonth() + month + 1 > 12) {
        y = y + 1
        m = time.getMonth() + month - 11 //获取当前月份的日期 d
    } else {
        m = time.getMonth() + month + 1 //获取当前月份的日期 d
    }
    if (state == 'start') { //起始日期
        if (month == 0) { //默认是今天的日期
            d = new Date().getDate()
        } else {
            d = 1 //其他的是从 1 号开始
        }
    } else { //结束日期
        d = monthDays(y, m)
    }

    return y + "/" + m + "/" + d
}

// 获取指定年月的天数
const monthDays = (year, month) => {
    let stratDate = new Date(year, month - 1, 1),
        endData = new Date(year, month, 1)
    let days = (endData - stratDate) / (1000 * 60 * 60 * 24)
    return days
}